#!/usr/bin/env python
# -*- encoding: utf-8 -*-
"""
主题: 顺序迭代合并后的排序迭代对象
问题: 你有一系列排序序列，想将它们合并后得到一个排序序列并在上面迭代遍历。
提示 : 
    1. heapq.merge 可迭代特性意味着它不会立马读取所有序列。 这就意味着你可以在非常长的序列中使用它，而不会有太大的开销。
    2. heapq.merge() 需要所有输入序列必须是排过序的
"""

import heapq


def recipe1():
    a = [1, 4, 7, 10]
    b = [2, 5, 6, 11]
    for c in heapq.merge(a, b):
        print(f'{c = }')


def recipe2():
    '''合并两个排序文件'''
    with open('15_merge_sorted_1.txt', 'rt') as f_in1, \
            open('15_merge_sorted_2.txt', 'rt') as f_in2, \
            open('15_merge_sorted_3.txt', 'wt') as f_out:

            for line in heapq.merge(f_in1, f_in2):
                f_out.write(line)
                print(f'{line = }')


def main():
    print('recipe1'.center(20, '*'))
    recipe1()
    print('recipe2'.center(20, '*'))
    recipe2()


if __name__ == '__main__':
    main()
